热身赛光荣打铁,只能回来补题。。
思路
题目来源Kickstart Round A 2017 Problem A。大致意思是从一个m*n矩形中能选出多少个正方形(这里给的是点数,我们默认m-1,n-1)。对于这个问题我们把斜着的正方形和正常的正方形分开考虑。
对于正常的正方形有:
对于斜着的正方形有:(画张图考虑后能发现斜着且撑满的正方形只有k-1个,然后从小正方形到大正方形累加)
化简可得
利用平方和公式和立方和公式我们能O(1)求出答案
代码
1 |
|
真彩希帆のファン
热身赛光荣打铁,只能回来补题。。
题目来源Kickstart Round A 2017 Problem A。大致意思是从一个m*n矩形中能选出多少个正方形(这里给的是点数,我们默认m-1,n-1)。对于这个问题我们把斜着的正方形和正常的正方形分开考虑。
对于正常的正方形有:
对于斜着的正方形有:(画张图考虑后能发现斜着且撑满的正方形只有k-1个,然后从小正方形到大正方形累加)
化简可得
利用平方和公式和立方和公式我们能O(1)求出答案
1 | #include <bits/stdc++.h> |